package leetcode;

import java.util.Arrays;

public class LeetCode66 {

//    public int[] plusOne(int[] digits) {
//        boolean next = digits[digits.length - 1] + 1 > 10;
//        if (next) {
//            digits[digits.length - 1] -= 9;
//            for (int i = digits.length - 2; i >= 0; i--) {
//                int tmp = digits[i] + 1;
//                if (tmp >= 10) {
//                    digits[i] -= 9;
//                } else {
//                    digits[i] = tmp;
//                    return digits;
//                }
//            }
//        } else {
//            digits[digits.length - 1]++;
//            return digits;
//        }
//        return digits;
//    }

    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            int tmp = digits[i] + 1;
            if (tmp >= 10) {
                digits[i] -= 9;
                if (i == 0) {
                    int[] result = new int[digits.length + 1];
                    result[0] = 1;
                    System.arraycopy(digits, 0, result, 1, digits.length);
                    return result;
                }
            } else {
                digits[i] = tmp;
                return digits;
            }
        }
        return digits;
    }
//------------------------------------------------------------------

    //遇0进1
    public int[] plusOne2(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if (digits[i] != 0) return digits;
        }
        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }
}
